package dao;

import datos.Usuario;
import java.sql.*;
import javax.swing.JOptionPane;
public class MySqlUsuarioDAO implements UsuarioDAO
{
      private Connection con;
      private Statement st;

      public MySqlUsuarioDAO()
      {           
      }
    
      public boolean insert( Usuario usuario )
      {
          MySqlDAOFactory mdf = ( MySqlDAOFactory )DAOFactory.getDAOFactory( DAOFactory.MYSQL );
          con = mdf.createConnection();
          
          String usu = usuario.getUsuario();
          String pass = usuario.getPass();
          boolean resp = true;
          ResultSet res = null;
          String id = "SELECT MAX(idUsuario) as \"idMaximo\" FROM usuario";
          System.out.println(id);
          int idUs = 0;
          try{
                st = con.createStatement();
                st.execute( id );
                res = st.getResultSet();
                if( res.next() ){
                   idUs = res.getInt( "idMaximo" );
                   idUs++;
                }
          }catch( SQLException e ){
                idUs = 1;
          }
          close();
          con = mdf.createConnection();
          String s = "insert into usuario (idUsuario, usuario, password)";
          s = s + " values ("+ idUs + ",\"" + usu + "\",\"" + pass + "\")";
          try{
                st = con.createStatement();
                st.execute( s );
          }
          catch( SQLException e ){
               JOptionPane.showMessageDialog(null, "Error - Usuario ya registrado");
               resp = false;
          }
          close();
          return resp;
      }

      public Usuario find( Usuario usuario )
      {
          MySqlDAOFactory adf = ( MySqlDAOFactory )DAOFactory.getDAOFactory( DAOFactory.MYSQL );      
          con = adf.createConnection();

          String usu = usuario.getUsuario();
          String cont = usuario.getPass();
          Usuario to = null;
          ResultSet res = null;
          String s = "select * from usuario where usuario = \"" + usu + "\" AND password = \"" + cont+"\"";
          try {
                st = con.createStatement();
                st.execute( s );
                res = st.getResultSet();
                if( res.next() )
                {
                   String usuar = res.getString( "usuario" );
                   String pass = res.getString( "password" );
                   to = new Usuario( usuar, pass);
                }
          }
          catch( SQLException e ){
               System.out.println("Error al buscar un Usuario en la Base: " + e.getMessage());
          }
          close();
          return to;
      }

      private void close()
      {
          try
          {
             con.close();
          }
          catch( Exception e )
          {
             System.out.println( "Error al cerrar la conexi�n: "  + e.getMessage() ) ;  
          }
      }
}
